/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.acworks.acroute.v2;

import java.util.List;

/**
 *
 * @author nikita
 */
public interface Path {

    /**
     * if possible, advance to the next unvisited successor, traveling
     * along one of pag.getArcs()
     * @param pag
     * @return true if we indeed advanced
     */
    boolean advanceToNextUnvisitedSuccessor(PathAwareGraph pag);

    boolean isAtStartNode();

    boolean isHamiltonianPath();

    void popCurrentNode();

    void advanceToNextUnvisitedSuccessor();

    boolean currentNodeHasUnvisitedSuccessors();

    List<Node> getPathNodes();
}
